iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
AI & Data

30天AI馴獸師之生存日記系列 第 5

【Day 05】淺挖一下 Self-Attention 和 CNN 的關係吧!

  • 分享至 

  • xImage
  •  

雖然 Self-Attention 最初在 Transformer 中被使用的時候,是用來解決 NLP 的問題,但後來也有人把 Self-Attention 的機制用在 image 上面,並且在 CV 的一些 task 中,transformer-based 的 model 甚至能打敗 ResNets 成為 SOTA。

於是開始有人研究 self-attention 是否能取代 CNN 呢?

比方說,我們在 image 上的每個 pixel 使用 self-attention 的 KQV 計算方法,假如我們使用的 9 個 attention head 每個都能 attend 在 query pixel 周圍的單個 pixel 上,那它做的事情就像是 3*3 的 CNN filter 一樣。

https://ithelp.ithome.com.tw/upload/images/20220920/20152668jra2C8OPen.png

2020 年一篇發表在 ICLR 的 paper: ON THE RELATIONSHIP BETWEEN SELF-ATTENTION AND CONVOLUTIONAL LAYERS,就從理論以及實驗上證明 Multi-head self-attention 可以看成 CNN 的強化版本。

如果說 Convolution layer 中的 filter 是人為劃定出一個固定大小和形狀的 receptive field(ex: 33),並且每個 pixel 都只考慮自己這個 receptive field 裡面的資訊;Self-attention 就是在考慮整張圖片的 pixel 後,跟每個 pixel 計算 querykey 的值,以找出與自己相關的 pixel,可以說是由模型自己學出 receptive filed 應該要是什麼形狀、範圍應該要有多大多小。所以基本上,self-attention 只要設定合適的參數,CNN 能做到的事情他都可以做到。

https://ithelp.ithome.com.tw/upload/images/20220920/20152668KIRnCWNZxR.png

但是雖然理論上是這樣,實際上在 CV 任務中使用 self-attention,model 的行為還會跟 CNN 一樣嗎?

這篇 paper 的作者 implement 兩個分別有 6 層和 9 層的 fully-attentional model,並 train 在 CIFAR-10 做圖像分類的任務,也提供 demo web 來視覺化每個 query pixel 在各 layer 的 attention map。
我在他們的 demo web 上,選擇鯊魚那張圖片的任意一個 pixel 當成 query pixel。
可以發現基本上下面 9 個 attention head 都會各司其職,各自關注在圖片中不同的區域,且隨著 layer 逐漸加深,後面幾層 attention head 都是關注比較 global 的 patch,相較前幾層通常只關注在局部特徵,後面幾層被賦予較高的 attention probability 的 pixel 幾乎都分散在整張圖片上。
https://ithelp.ithome.com.tw/upload/images/20220920/20152668OFRlbgZhOV.png
確實發現 self-attention 表現出一些和 CNN 相似的特性,


上一篇
【Day 04】有了會 self-adjusted 的 optimizer(如:Adagrad, Adam),我還需要 learning rate scheduler 嗎?
下一篇
【Day 06】只想越跳越瘋,把 self-attention 甩掉!
系列文
30天AI馴獸師之生存日記15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言